/**
  * Author: Mei
  * Date: 2020-11-23 10:13
  * Description: 
  *
  */
#include <iostream>
#include <mutex>
#include <thread>

std::mutex coutMutex;
//首先，主线程执行打印id后，它使用调用t.join()来等待它的子线程执行完成。但是主线程在等待的同时，锁定了输出流。但这正是子线程等待的资源。。。。
int main() {

    std::thread t([] {
                      std::cout << "Still waiting ..." << std::endl;
                      std::lock_guard<std::mutex> lockGuard(coutMutex);
                      std::cout << std::this_thread::get_id() << std::endl;
                  }
    );

    {
        std::lock_guard<std::mutex> lockGuard(coutMutex);
        std::cout << std::this_thread::get_id() << std::endl;
        t.join();  //只有t.join()执行完才会释放互斥体  但执行t.join()会等到子线程执行完自己才会执行完

    }
    //t.join();
}